CSS
Содержание:
- CSS
CSS
Заголовок | Жирный, крупный и по центру |
---|---|
Абзац | Отступы и переносы строк |
Список | Маркеры и переносы строк |
Каскадные таблицы стилей - формальный язык описания внешнего документа, написанного с использованием языка разметки.
Tag font deprecated
<font face="verdana" color="green">some text</font>
Элемент style
Отвечает за стилистическое оформление страницы(шрифт, размер шрифта, цвет…) и находится в <head> ().
Включение таблиц стилей в документ
↓ П
↓
<link rel="stylesheet" href="main.css" ↓ Р
type="text/css"> ↓
↓ И
Где main.css: ↓
↓ О
h1 { font-size: 40px; ↓
font-family: Verdana, sans-serif; ↓ Р
color: #333366; } ↓
p { font-size: 14px; ↓ И
text-align: center;} ↓
↓ Т
<h1 style="border-width: 1; border: solid; ↓
text-align: center"> Заголовок </h1> ↓ Е
↓
↓ Т
Типы устройств
<link rel="stylesheet" href="sc.css" media="screen">
<link rel="stylesheet" href="prn.css" media="print">
<style media="screen">
h1 { color: #333366; }
</style>
Значение атрибута media | |
---|---|
aural | синтезатор речи |
принтер | |
projection | проектор |
screen | графический дисплей |
tv | телевизор |
CSS1 и СSS2: исторический обзор
- 1994 г. Хокон Виум Ли предложил термин «каскадные таблицы стилей»
- 1996 г., декабрь W3C стандартизировал CSS1
- 1998 г., май W3C стандартизировал CSS2
Возможности CSS1
- Параметры шрифтов
- Цета
- Атрибуты текста
- Выравнивание для элементов
- Свойста блоков: размеры, отступы и рамки
Возможности CSS2
- Блочная верстка
- Типы носителей
- Звуковые таблицы стилей
- Расширенный механизм селекторов
CSS3 - набор стандартов
Синтаксис CSS
Табллица стилей состоит из операторов: директив и правил
@import - включает другую таблицу стилей в текущую.
@media - Задает имена устройств отображения.
@import "mystyle.css"
@media print{
body {font-size: 10pt}
}
Правило состоит из селектора и деклараций:
h1 { font-size: 120%; /*относительный размер*/
font-family: Verdana;
color: #333366; }
Директива @import
<head>
<title>Импортирование</title>
<style>
@import url(mystyle.css)
/*далее следуют правила... */
</style>
</head>
Если правил несколько - то побеждает последнее описанное
@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
Директива @media
Директива @media создает таблицы стилей, зависящие от устройства отображения.
@media print {
body { font-size: 20pх }
}
@media screen {
body { font-size: 12pt }
}
@media print, screen{
body {line-height: 1.2pt }
}
Типы данных CSS
- Целые и действительные числа
- Размеры = <число> с единицей измерения
число>
- Абсолютные единицы измерения
- cm
- mm
- in
- Относительные единицы измерения
- px (PICture ELement)
- em (ширина m в используемом шрифте)
- ex
- Абсолютные единицы измерения
- Процентные значения = <Число>%Число>
- URL
- Цвета
- Строки
- Счетчики
- Угловые величины
- Времена
- Частоты
Примеры
b- жирный
i - наклонный
h1 { margin: 0.5em }
h2 { word-spacing: 0.5in }
h3 { font-size: 12px }
body { background:
url(http://mysite.com/bg.gif) }
em { color: red }
body:after {content: "Конец документа" }
Иерархия элементов в html документе
<html>
<head>
<title>Тег STYLE</title>
</head>
<body>
<h1>Hello, world!</h1>
<p>Текст абзаца зеленого цвета</p>
</body>
</html>
HTML
|
--- ---
| |
head body
| |
title --- ---
| |
h1 p
Селекторы CSS
- Составной селектор - образуется из простых селекторов соединением их с помощью специльных символов
- Простой селектор = Базовый селектор, за которым следует нуль или более селекторов атрибутов, селекторов идентификаторов или (псевдо) классов
- Базовый селектор = Универсальный селектор или селектор типа
- Универсальный селектор *
- Селектор типа
Базовые селекторы: примеры
h1 {font-size: 120%; }
* {font-size: 120%; }
h1, h2, h3 {font-size: 120%; }
Селекторы классов
<style>
p.note {font-size: 80%;}
p.cite {text-align: center;}
</style>
<p class=”note”> - Для HTML-документов CSS поддерживает селекторы классов, которые основаны на использовании атрибута class и имеют вид element.class
<p class=”site”*> - If an element has multiple class attributes, their values must be concatenated with spaces between the values before searching for the class… © w3c.org
.info {font-style: italic}
<p class=”info”> - Селектор класса может не содержать названия элемента. Такое правило относится ко всем элементам, имеющим атрибут class со значением “warning”
<div class=”info”> - Селектор класса, не содержащий имени элемента, следует понимать как селектор *.class, в котором универсальный селектор * опущен
p.warning.red { font-style: italic }
<p class=”warning red blue”> - Применимо
<p class=”warning blue”> - Неприменимо
Селекторы идентификаторов
<style>
#note {font-size: 80%;}
</style>
<p id=”note”> - Документы могут содержать элементы с атрибутами id, задающими уникальные идентификаторы этих элементов
<style>
h1#info {font-size: 80%;}
</style>
Селекторы атрибутов
<style>
h1[title] {color: blue;}
p[text-align="right"] {color: blue;}
a[href^="http"]:after {content:attr(href)}
a[href$=".pdf"]:after{content: url(pdf-con.png)}
a[href*="w3c"] {text-decoration: none;}
p[class~="info"] {color: red;}
*[lang|="en"] {color: blue;}
</style>
Полный список и примеры см. http://htmlbook.ru/samcss/selektory-atributov
Пример
style>
a[target="_blank"]{
background:url(ico.png) 0 6px no-repeat;
padding-left: 15px;}
</style>
<a href="1.html">Обычная ссылка</a>
<a href="2.html" target="_blank">Ссылка в
новом окне</a>
Селекторы потомков и соседей
<style>
p span {color: blue;}
body > p {text-indent: 3em;}
div ol>li p {line-height: 1.5;}
H1 + H2 { margin-top: -5mm;}
H1.opener + H2 { margin-top: -5mm;}
</style>
Псевдоклассы
http://htmlbook.ru/css/cat/pseudoclass
<style>
DIV > P:first-child {text-indent: 3em;}
</style>
\<div>
<p> - Псевдокласс: first-child соответствует элементу, который является первым ребенком данного элемента </p>
<p> - Следующий абзац не написан с красной строки </p>
</div>
Наследование
Наследование - перенос правил форматирования для элементов, находящихся внутри других.
<head>
<title>Наследование</title>
<style>
h1 { color: red;}
</style>
</head>
<body>
<h1>
Этот заголовок <em>очень важен</em>!
</h1>
</body>
Пример
<head>
<title>Наследование</title>
<style>
table { color: red;
background: #333;
border: 2px solid red;}
</style>
</head>
<body>
<table cellpadding="4" cellspacing="0">
<tr>
<td>Ячейка 1</td><td>Ячейка 2</td>
</tr>
<tr>
<td>Ячейка 3</td><td>Ячейка 4</td>
</tr>
</table>
</body>
Таблицы стилей могут иметь три источника происхождения: автор, пользователь(сам может написать таблицу стилей) и обозреватель.
- Выбираются декларации, которые соответствуют данному устройству отображения; из них выбираются правила, чьи селекторы соответствуют данному элементу.
- Декларации сортируются по весу их источника.
- Производится вторичная сортировка по специфичности селектора.
- Если два правила имеют одинаковый вес и специфичность, то применяется последнее из них. При этом правила импортированных таблиц располагаются до всех правил импортирующей таблицы.
Директива !important
Атрибут !important позволяет правилам пользовательской таблицы стилей перекрывать авторские
Стиль автора | Стиль пользователя | Результат |
---|---|---|
!important | !important | Пользовательский |
!important | - | Авторский |
- | !important | Пользовательский |
- | - | Авторский |
*/ Из таблицы стилей пользователя */
P { text-indent: 1.5em !important }
P { font: 12pt sans-serif !important }
P { font-size: 24pt }
*/ Из таблицы стилей автора */
font: font-style | font-size | font-family и другие
Специфичность селектора
Порядок вычисления специфичности селектора :
a) подсчитать количество атрибутов id в селекторе;
b) подсчитать количество атрибутов class в селекторе (псевдоклассы учитываются);
c) подсчитать количество названий тегов HTML в селекторе.
Эти три числа записываются подряд, чтобы получить число из трех цифр (возможно, придется привести числа a, b и c к системе счисления с большим основанием, чтобы каждое из них выражалось одной цифрой). Результатом и будет специфичность селектора (чем она выше, тем селектор специфичней).
Селектор | Вес | Специфичность |
---|---|---|
* | a=0 b=0 c=0 | 0 |
li | a=0 b=0 c=1 | 1 |
li:first-line | a=0 b=0 c=2 | 2 |
ul li | a=0 b=0 c=2 | 2 |
ul ol+li | a=0 b=0 c=3 | 3 |
ul lo.red | a=0 b=1 c=2 | 12 |
li.red.level | a=0 b=2 c=1 | 21 |
#t34 | a=1 b=0 c=0 | 100 |
#cont #wrap | a=2 b=0 c=0 | 200 |
Вычисление значения свойств
После того, как обозреватель проанализировал документ и построил дерево документа, для каждого элемента дерева вычисляется значение каждого из его свойств, применимых к текущему устройству отображения.
-
Значение определяется из спецификации(специфицированное значение)
а) Если каскад возвращает значение, то используется оно;
b) Если свойство является наследуемым, от используется соответствующее значение отцовского элемента;
c) Иначе используется начальное значение свойства.
- Значение при необходимости преобразуется к абсолютному значению (вычисленное значение).
- Значение преобразуется с учетом ограничений контекста(фактическое значение).